/*
ID:luongho3
LANG:JAVA
TASK:frac1
 */
package usaco.training.chap2.sec1;

import java.io.File;
import java.io.PrintStream;
import java.util.Iterator;
import java.util.Scanner;
import java.util.Set;
import java.util.TreeSet;

public class frac1 {

	static int N;
	static Set<frac> set = new TreeSet<frac>();
	
	public static void main(String[] args) throws Exception {
		Scanner scanner = new Scanner(new File("frac1.in"));
		PrintStream ps = new PrintStream(new File("frac1.out"));
		System.setOut(ps);
		N = scanner.nextInt();
		set.add(new frac(0,1));
		set.add(new frac(1,1));
		for (int dem=1;dem<=N;++dem) {
			for (int num=1;num<dem;++num) {
				int g = gcd(num,dem);
				frac f = new frac(num/g,dem/g);
				if (!set.contains(f)) {
					set.add(f);
				}
			}
		}
		Iterator<frac> it = set.iterator();
		while (it.hasNext()) {
			frac f = it.next();
			System.out.println(f);
		}
	}

	static int gcd(int n, int m) {
		if (m==0) return n;
		return gcd(m,n%m);
	}
	
}
class frac implements Comparable<frac>{
	int num;
	int dem;
	frac(int num, int dem) {
		this.num = num;
		this.dem = dem;
	}

	public int compareTo(frac o) {
		return num*o.dem - dem*o.num;
	}
	public String toString() {
		return num + "/" + dem;
	}
}